Currently, a variety of Platform-as-a-Service (PaaS) offerings exists that include software and/or hardware facilities for facilitating the execution of applications in a cloud computing environment (the “cloud”). Cloud computing is a computing paradigm in which a customer pays a “cloud provider” to execute a program on computer hardware owned and/or controlled by the cloud provider. It is common for cloud providers to make virtual machines hosted on its computer hardware available to customers for this purpose.
The cloud provider typically provides an interface that a customer can use to requisition virtual machines and associated resources such as processors, storage, and network services, etc., as well as an interface a customer can use to install and execute the customer's program on the virtual machines that the customer requisitions, together with additional software on which the customer's program depends. For some such programs, this additional software can include software components, such as a kernel and an operating system, and/or middleware and a framework.
PaaS offerings typically facilitate deployment of application resources without the cost and complexity of buying and managing the underlying hardware and software and provisioning hosting capabilities, providing the facilities to support the complete life cycle of building and delivering applications. Typically, these facilities operate as one or more virtual machines (VMs) running on top of a hypervisor in a host server.
Most application resources utilize multiple layers of functionality to operate. Components within each of these layers may have their own resource requirements, dependencies, and so forth. Additionally, these components may operate on a single machine or may operate on different machines. As load on the application resources changes, it may be desirable to increase or decrease scale of the application resources. This may include utilizing additional application resources that host additional instances of the one or more of the layers or keeping such application resources available even when they are not needed. Also, when these machines are at capacity in terms of hosted application resources, additional application resources cannot be created until a PaaS operator provisions another application resource. The management of such scaling of PaaS resources can be quite complex, and is performed manually by a network administrator.